/* Copyright (c) 2003-2007 Caleb Doise
 * 
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

using System;
using System.Diagnostics;
using Microsoft.Win32;


namespace SharpScraps.Win32
{

    public static class BrowserLauncher
    {
        
        public static void LaunchDefaultBrowser(string url)
        {            
            Process p = new Process();
            p.StartInfo.FileName = GetDefaultBrowserPath();
            p.StartInfo.Arguments = "\"" + url.Replace(" ", "%20") + "\"";
            p.Start();
        } // LaunchDefaultBrowser


        public static string FilePathToUrl(string filePath)
        {
            string url = "file:///" + filePath.Replace(@"\", "/").Replace(" ", "%20");

            return url;
        } // FilePathToUrl


        private static string GetDefaultBrowserPath()
        {           
            using (RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false))
            {            
                string browser = (string)key.GetValue(null);
                
                // Remove any quotes.
                browser = browser.Replace("\"", "");
                browser = browser.ToLower();

                // Only take the executable file name.
                if (!browser.EndsWith(".exe"))                
                    browser = browser.Substring(0, browser.LastIndexOf(".exe") + ".exe".Length);
                
                return browser;
            }                       
        } // GetDefaultBrowserPath

    } // class BrowserLauncher


}